package gomz.pres.admin;

import gomz.GlobalRes;
import gomz.res.User;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 * Diese Klasse steuert das UI der Benutzerdatenverwaltung eines Benutzers. Es reagiert auf die Eingaben des Benutzers.
 * @author Murillo
 */
public class CAAccount {
	// ********************************************************************************
	// Variablen
	// ********************************************************************************
	private MVerwaltung model;
	private GUIAAccount view;
	private JFrame pWindow;
	
	//*********************************************************************************
	// Konstruktor
	// ********************************************************************************
	/**
	 * Konstruktor fuer den Controller fuer die Benutzerverwaltung
	 */
	public CAAccount(JFrame pWindow, GUIAAccount view, MVerwaltung model) {
		this.model = model;
		this.view = view;
		this.pWindow = pWindow;
		
		addListener();
	}
	
	// ********************************************************************************
	// Listener
	// ********************************************************************************
	/**
	 * Diese Methode fuegt die Listener hinzu
	 */
	private void addListener(){
		//Buttons**********************************************************************
		//Speichern
		view.getBtAsave().addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				doSave();
			}
		});
		
		//Abbrechen
		view.getBtAcan().addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				fillData();
			}
		});
	}
	
	// ********************************************************************************
	// Methoden
	// ********************************************************************************
	/**
	 * Diese Methode speichert die Angaben aus dem GUI auf dem Server
	 */
	public void doSave(){
		boolean  re = false;
		
		//Benutzername und Passwort muessen angegeben werden
		if(view.getTfAuser().getText().equals("") || view.getPfApw().getPassword().length == 0){
			JOptionPane.showMessageDialog(pWindow, "Es muss ein Benutzername und ein Passwort angegeben werden", "Benutzer speichern", JOptionPane.WARNING_MESSAGE);
		}
		else{
			re = model.saveUser(GlobalRes.getActivUser().getId(),view.getTfAuser().getText(),
					view.getPfApw().getPassword(), view.getTfAfirstname().getText(),view.getTfAlastname().getText(),
					view.getTfAemail().getText(), view.getCxAlang().getSelectedIndex(), GlobalRes.getActivUser().isAdmin());
			if(!re){
				JOptionPane.showMessageDialog(pWindow, "Die \u00c4enderungen konnten nicht gespeichert werden.", "Benutzer speichern", JOptionPane.ERROR_MESSAGE);
			}
			else{
				//zwischenspeichern um bei wechsel in die Fragestellung Frage neu zu laden (moeglicher sprachwechsel)
				model.setActivUserSaved(true);
			}
		}
	}
	
	/**
	 * Diese Methode setzt die angezeigten Daten im GUI zurueck
	 */
	public void fillData(){
		User activUser = GlobalRes.getActivUser();
		view.getTfAuser().setText(activUser.getUsername());
		view.getPfApw().setText("");
		view.getTfAfirstname().setText(activUser.getVorname());
		view.getTfAlastname().setText(activUser.getNachname());
		view.getTfAemail().setText(activUser.geteMail());
		view.getCxAlang().setSelectedIndex(activUser.getLanguage()-1);
	}
}
